package controlador;

import java.sql.Date;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.persistence.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


//import org.apache.openjpa.kernel.FillStrategy.Map;
import prueba.Car;
import modelo.*;
import vista.*;

@ManagedBean(name = "carService")
@ApplicationScoped
public class Procesa {
	private static final EntityManagerFactory emf=Persistence.createEntityManagerFactory("Intranet");
	private static final EntityManager em =  emf.createEntityManager();
	private int i=0;
	private int idUsuario;
	private static Usuario usuario;
	private static Publicacion publicacion;
	private static final String BuscarTodosLosUsuarios="SELECT c FROM Usuario c";
	private static final String BuscarTodasLasPublicaciones="SELECT p FROM Publicacion p";
	private static final String []MostrarLista;
	
	static{
		Query q=em.createQuery(BuscarTodasLasPublicaciones);
        List<Publicacion> resultados =  q.getResultList();
        MostrarLista = new String[resultados.size()];
        publicacion=new Publicacion();
        for(int i=0;i<resultados.size();i++){
        	publicacion=resultados.get(i);
        	MostrarLista[i]=publicacion.getConversasion();
        }
	}
	
	public List<Publicacion> createAlgo() {
        List<String> lista = new ArrayList<String>();
        Query q=em.createQuery(BuscarTodasLasPublicaciones);
        List<Publicacion> resultados =  q.getResultList();
        publicacion=new Publicacion();
        for(int i=0;i<resultados.size();i++){
        	publicacion=resultados.get(i);
        	lista.add(publicacion.getConversasion());
        }
        return resultados;
    }
	
     
	
	public List<String> getMostrarLista() {
        return Arrays.asList(MostrarLista);
    }
	
	@SuppressWarnings("null")
	public Usuario iniciarSesion(String login,String contrasena2) {
        String nombreLogin=null,password=null;
        Query q=em.createQuery(BuscarTodosLosUsuarios);
        List<Usuario> resultados =  q.getResultList();
        usuario=new Usuario();
		for(int i=0;i<resultados.size();i++){
        	usuario=resultados.get(i);
        	nombreLogin=usuario.getLogin();
        	password=usuario.getPassword();
        	idUsuario=usuario.getIdUsuario();
        	if(nombreLogin.equals(login)&&contrasena2.equals(password)){
        		return usuario;
        	}
        }
		return null;
	}
	public void Registrarpublicacion(String entradapublicacion,String login){
		long TIEMPO=System.currentTimeMillis();
		Date fechaPu=new Date(TIEMPO);
		//idUsuario=1;
		publicacion=new Publicacion();
		i++;
		Query q=em.createQuery(BuscarTodosLosUsuarios);
        List<Usuario> resultados =  q.getResultList();
        System.out.println("+++++++++"+entradapublicacion);
		for(int i=0;i<resultados.size();i++){
        	usuario=resultados.get(i);
        	String nombreLogin=usuario.getLogin();
        	if(nombreLogin.equals(login)){
        		break;
        	}
        }
        em.getTransaction().begin();
        try {  	
			publicacion.setIdPublicacion(i);
			publicacion.setConversasion(entradapublicacion);
			publicacion.setFechaPu(fechaPu);
			publicacion.setEstadoPu(true);
			publicacion.setUsuario(usuario);
			em.persist(publicacion);
			em.getTransaction().commit();  
        	  } catch (Exception e) {  
        	   e.printStackTrace();  
        	  } finally {  
        	   em.close();  
        	   emf.close();  
        }
	}
	/*public String MostrarLasPublicaciones(){
		Query q=em.createQuery(BuscarTodasLasPublicaciones);
        List<Publicacion> resultados =  q.getResultList();
        publicacion=new Publicacion();
        for(int i=0;i<resultados.size();i++){
        	publicacion=resultados.get(i);
        	MostrarLista.add("a");
        	//list.add(new Car(getRandomBrand(), getRandomYear(),getRandomId(),  getRandomColor()));
        }
        //MostrarLista2=MostrarLista;
		return MostrarLista;
	}*/
	
}
